/**
 * @Author: CJJ
 * @Date:2025/4/10
 * 使用异常处理程序组件try,catch和finally快来处理异常
 * 为了捕获和处理异常,我们将try...catch...finally代码快放置在可能产生异常的代码周围。
 * finally块是可选的。
 *
 * 1.try...catch
 * 可能会生成异常的代码放在try块中。
 * 每个try块后面应紧跟着catch或finally块。发生异常时，它会被catch紧随其后的块捕获。
 * cacth块不能单独使用,必须紧随try块
 */
public class catch1 {
    public static void main(String[] args) {

        try {
            int divByZero = 5 / 0;
            System.out.println("try块中的其余代码");
        } catch (ArithmeticException e) {
            System.out.print("ArithmeticException=>" + e.getMessage());
        }
    }

    @FunctionalInterface
    public interface GenericInterface<T> {
        //泛型方法
        T fun(T t);
    }

    //GenericLambda.java
   public class Main{
        public  void main(String[] args) {
             //声明对GenericInterface接口的引用
            //GenericInterface对String数据进行操作
            //为其分配一个lambda表达式
            GenericInterface<String> reverse=(str) -> {
                String result = "";
                for (int i = str.length() - 1; i >= 0; i--)
                    result += str.charAt(i);
                    return result;
                };
             System.out.print("Lambda reversed="+reverse.fun("Lambda"));
                 //声明对GenericInterface的另一个引用
                //GenericInterface对Integer数据进行操作
                //为其分配一个lambda表达式
            GenericInterface<Integer> factorial=(n) -> {
                int result = 1;
                for (int i = 1; i <= n; i++)
                    result *= i;
                    return result;
                };
            System.out.print("5的阶乘="+factorial.fun(5));
            }
    }
}
